<?php

namespace Packages\Authority\Repositories;

use App\Tools\Common;
use Packages\Authority\Models\RelRoleAuthModel;
use Packages\Authority\Repositories\BaseRepository;
use Illuminate\Support\Facades\DB;
use Exception;

class RelRoleAuthRepositories
{
    use BaseRepository;

    protected static $db;

    public function __construct()
    {
        self::$db = new RelRoleAuthModel;
    }

    /**
     * 获取全部权限
     * @param $data
     * @return array
     */
    // public function all($data)
    // {

    //     // 查询条件
    //     $result = self::$db
    //         ->select(['auth_id'])
    //         ->when(@$data['role_id'], function ($q) use ($data) {
    //             $q->where('role_id', $data['role_id']);
    //         })
    //         ->when(@$data['app_id'], function ($q) use ($data) {
    //             $q->where('app_id', $data['app_id']);
    //         })
    //         ->when(@$data['limit'], function ($q) use ($data) {
    //             $q->limit($data['limit']);
    //         })
    //         ->get()
    //         ->pluck('auth_id');

    //     return $result;
    // }

    /**
     * 获取角色全部权限
     * @param $role_id
     * @return array
     */
    public function roleAuthAllId($role_id)
    {

        // 查询条件
        $result = self::$db->select(['auth_id'])
            ->where('role_id', $role_id)
            ->get()
            ->pluck('auth_id');

        return $result;
    }

    /**
     * 添加权限
     * @param array $data 
     * @return collection
     */
    public function create(array $data)
    {

        $info = self::$db->create([
            'role_id' => $data['role_id'], // 角色ID
            'auth_id' => $data['auth_id'], // 权限ID
            'platform' => $data['platform'] ?? 'admin', // 平台
            'app_id' => $data['app_id'] ?? '0' // 应用ID
        ]);

        return $info;
    }

    /**
     * 移除权限
     * @param array $data 
     * @return int
     */
    public function remove(array $data)
    {

        return self::$db->where('role_id', $data['role_id'])
            ->where('auth_id', $data['auth_id'])
            ->delete();
    }
}
